﻿using System;

namespace SharpSqlAnalyzer.nodes.teradata
{
	// Token: 0x02000387 RID: 903
	public class TExpandOnClause : TParseTreeNode
	{
		// Token: 0x060025A6 RID: 9638 RVA: 0x00339ECF File Offset: 0x003380CF
		public override void init(object arg1, object arg2)
		{
			this.expandExpression = (TExpression)arg1;
			this.expandColumnAlias = (TAliasClause)arg2;
		}

		// Token: 0x1700082F RID: 2095
		// (get) Token: 0x060025A7 RID: 9639 RVA: 0x00339EE9 File Offset: 0x003380E9
		// (set) Token: 0x060025A8 RID: 9640 RVA: 0x00339EF1 File Offset: 0x003380F1
		public virtual TExpression ExpandExpression
		{
			get
			{
				return this.expandExpression;
			}
			set
			{
				this.expandExpression = value;
			}
		}

		// Token: 0x17000830 RID: 2096
		// (get) Token: 0x060025A9 RID: 9641 RVA: 0x00339EFA File Offset: 0x003380FA
		// (set) Token: 0x060025AA RID: 9642 RVA: 0x00339F02 File Offset: 0x00338102
		public virtual TAliasClause ExpandColumnAlias
		{
			get
			{
				return this.expandColumnAlias;
			}
			set
			{
				this.expandColumnAlias = value;
			}
		}

		// Token: 0x17000831 RID: 2097
		// (get) Token: 0x060025AB RID: 9643 RVA: 0x00339F0B File Offset: 0x0033810B
		// (set) Token: 0x060025AC RID: 9644 RVA: 0x00339F13 File Offset: 0x00338113
		public virtual TExpression ByIntervalLiteral
		{
			get
			{
				return this.byIntervalLiteral;
			}
			set
			{
				this.byIntervalLiteral = value;
			}
		}

		// Token: 0x17000832 RID: 2098
		// (get) Token: 0x060025AD RID: 9645 RVA: 0x00339F1C File Offset: 0x0033811C
		// (set) Token: 0x060025AE RID: 9646 RVA: 0x00339F24 File Offset: 0x00338124
		public virtual TObjectName AnchorName
		{
			get
			{
				return this.anchorName;
			}
			set
			{
				this.anchorName = value;
			}
		}

		// Token: 0x17000833 RID: 2099
		// (get) Token: 0x060025AF RID: 9647 RVA: 0x00339F2D File Offset: 0x0033812D
		// (set) Token: 0x060025B0 RID: 9648 RVA: 0x00339F35 File Offset: 0x00338135
		public virtual TConstant TimeLiteral
		{
			get
			{
				return this.timeLiteral;
			}
			set
			{
				this.timeLiteral = value;
			}
		}

		// Token: 0x17000834 RID: 2100
		// (get) Token: 0x060025B1 RID: 9649 RVA: 0x00339F3E File Offset: 0x0033813E
		// (set) Token: 0x060025B2 RID: 9650 RVA: 0x00339F46 File Offset: 0x00338146
		public virtual TExpression PeriodExpression
		{
			get
			{
				return this.periodExpression;
			}
			set
			{
				this.periodExpression = value;
			}
		}

		// Token: 0x17000835 RID: 2101
		// (set) Token: 0x060025B3 RID: 9651 RVA: 0x00339F50 File Offset: 0x00338150
		public virtual TDummy ByClause
		{
			set
			{
				if (value == null)
				{
					return;
				}
				if (value.int1 == 1)
				{
					this.byIntervalLiteral = (TExpression)value.node1;
					return;
				}
				if (value.int1 == 2)
				{
					this.anchorName = (TObjectName)value.node1;
					if (value.node2 != null)
					{
						this.periodExpression = (TExpression)value.node2;
					}
				}
			}
		}

		// Token: 0x060025B4 RID: 9652 RVA: 0x00339FAF File Offset: 0x003381AF
		public override void doParse(TCustomSqlStatement psql, ESqlClause plocation)
		{
			this.expandExpression.doParse(psql, plocation);
			if (this.byIntervalLiteral != null)
			{
				this.byIntervalLiteral.doParse(psql, plocation);
			}
			if (this.periodExpression != null)
			{
				this.periodExpression.doParse(psql, plocation);
			}
		}

		// Token: 0x060025B5 RID: 9653 RVA: 0x00339FE8 File Offset: 0x003381E8
		public override void accept(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x060025B6 RID: 9654 RVA: 0x00339FF8 File Offset: 0x003381F8
		public override void acceptChildren(TParseTreeVisitor v)
		{
			v.preVisit(this);
			v.postVisit(this);
		}

		// Token: 0x04001CDC RID: 7388
		private TExpression expandExpression;

		// Token: 0x04001CDD RID: 7389
		private TAliasClause expandColumnAlias;

		// Token: 0x04001CDE RID: 7390
		private TExpression byIntervalLiteral;

		// Token: 0x04001CDF RID: 7391
		private TObjectName anchorName;

		// Token: 0x04001CE0 RID: 7392
		private TConstant timeLiteral;

		// Token: 0x04001CE1 RID: 7393
		private TExpression periodExpression;
	}
}
